In a wireless radio communication system, a communication link consists of a transmitter, receiver and the propagation channel connecting these two. The propagation channel is not ideal in the sense that it causes interference to the transmitted signal, which results in that the received data is corrupt which affects the receiver's performance of detecting and outputting correct data bits/symbols. For this reason, various methods are used in the transmitter and receiver. One of these is the use of channel error correction codes. Error correction is applied as channel encoding to the transmitter and a decoding to the receiver. The purpose for encoding is to add redundancy to the transmitted data in a controlled matter. Often this denotes transmitting m information bits in n bits, thus yielding a code rate of m/n. The added redundancy may be parity information, for example. A parity bit informs how many bits of “1” there should be in the received data. In practice, channel encoding increases the distance between the transmitted symbols in the signal space.
One example of the error correction codes are turbo codes which require a turbo coder and a turbo decoder to be employed in the transmitter and in the receiver, respectively. As shown in FIG. 1A, the encoder 140 utilizes two identical convolutional encoders 106 and 110 concatenated together via parallel concatenation and separated by an interleaver 108. In an example implementation, the turbo decoder 150, shown in FIG. 1B, also comprises two decoders 116 and 120 concatenated together via serial concatenation and separated by an interleaver 118. The first decoder 116 outputs a soft decision of the transmitted bit and the second decoder 120 yields a hard decision 130, i.e., the transmitted bit. The decoder 150 may also apply a feedback loop 112 for iterating the decoding process in order to enhance the reliability of the hard decision 130.
The drawback of the turbo decoder 150 is its high complexity and high latency, which consists of delays generated by the first decoder 116, the second decoder 120 and the way the input data is fed to the decoder 150. That is, the decoder 150 requires the data to be fed in a certain order. This is not a trivial operation and causes delays in the operation. However, a latency-minimized operation is essential for many applications in order to provide adequate data throughput. For this reason, a solution is needed to reduce the delays needed for the decoding process.